Skip to content

fix: address post-merge review findings (JSON stdout purity, branch slug collisions, dedupe over-collapse)#59

Merged
roodboi merged 1 commit into
mainfrom
fix/review-comments-round2
Jul 8, 2026
Merged

fix: address post-merge review findings (JSON stdout purity, branch slug collisions, dedupe over-collapse)#59
roodboi merged 1 commit into
mainfrom
fix/review-comments-round2

Conversation

@roodboi

@roodboi roodboi commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Sweep of review comments that arrived after PRs #54/#58 merged:

  • JSON stdout purity (P1, Worktree-first development + agent experience overhaul #54): compose subprocess output inherited stdout under --json, so progress lines could precede the envelope. run() can now route child stdout to fd 2; wired through the backend and all lifecycle call sites. Plumbing pinned by tests.
  • Branch slug collisions (P2, Worktree-first development + agent experience overhaul #54): feature/api and feature-api sanitize identically — two worktrees would share one branch instance and could stop each other's containers. Colliding slugs now get a deterministic 4-hex raw-name suffix on both sides; non-colliding slugs unchanged. Tested with a real two-worktree fixture including stability across invocations.
  • Dedupe over-collapse (P2, feat(init): discovery validation pass + field-report onboarding improvements #58): single-package repos with distinct dev:web/dev:api scripts lost all but one service. Dedupe now groups by (package, script suffix) so distinct services survive and only same-service variants (dev/start/serve/watch) collapse.

Full suite 811/0, e2e green.

🤖 Generated with Claude Code

1. up/down/restart --json route compose subprocess stdout to stderr so
   stdout stays a single parseable envelope (shell.run gains fd-2
   routing; threaded through the compose backend and all four lifecycle
   call sites).
2. Auto branch slugs are collision-resistant: when two linked
   worktrees' branches sanitize to the same slug (feature/api vs
   feature-api), both deterministically get a short raw-name hash
   suffix instead of silently sharing one branch instance.
3. Per-package dedupe groups by (package, script suffix): distinct
   dev:web/dev:api scripts in a single-package repo are distinct
   services and all survive; only same-service variants collapse.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@roodboi roodboi merged commit e941ca3 into main Jul 8, 2026
4 checks passed
@roodboi roodboi deleted the fix/review-comments-round2 branch July 8, 2026 01:50
roodboi pushed a commit that referenced this pull request Jul 8, 2026
## <small>3.3.1 (2026-07-08)</small>

* Merge pull request #59 from hack-dance/fix/review-comments-round2 ([e941ca3](e941ca3)), closes [#59](#59)
* fix: address post-merge review findings across PRs 54 and 58 ([11f5788](11f5788))

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

const key = `${candidate.packageId}${suffix}`;

P2 Badge Escape the separator instead of embedding a NUL byte

This template literal contains an actual NUL byte between packageId and suffix. That makes Git classify src/init/validation.ts as binary in this commit, so future reviews, merges, and text-processing tools lose normal line diffs even though this is TypeScript. Use an escaped separator such as \0 or a printable delimiter instead.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant